Conventional storage environments usually balance the need to ensure that data is not lost with the need to efficiently use the finite amount of storage space available in a particular storage environment. To prevent and/or reduce the possibility of data loss, conventional storage environments often create redundant copies of the data stored therein. While this is an effective technique of preserving data, the store redundant copy of the data reduces the amount of space available to store other data. Some conventional storage environments utilize snapshots as part of a balancing technique that can improve storage efficiency and/or data integrity.
A snapshot is a set of pointers or reference markers for data at a particular point in time. Snapshots are created to preserve point in time copies of the data to which point in time a storage system can be rolled back to in the event that the data becomes otherwise unavailable. Traditionally, snapshots are available on instant basis to other applications involved in data analysis, data protection, and/or data replication. The data related copy is usually constantly and/or consistently available to the other applications. However, a snapshot can also be available as a backup copy to perform other functions on the data. Since a snapshot is a set of pointers and not an actual copy of the data itself, a snapshot can reduce the amount of storage space utilized to provide a “copy” or pseudo-copy of the data compared to an actual copy.
While the use of snapshots can assist a storage environment in more efficiently using storage space by providing a copy of the data that utilizes a smaller amount of storage space compared to an actual copy, there can be circumstances in which certain data can cause a storage environment that utilizes snapshots to experience a greater amount of latency than necessary. For example, some data may be repeatedly requested by a host computing device, which causes a volume storing a snapshot or flash copy of the data (e.g., a target volume) that is the recipient of the requests to further request the actual data from a volume storing the data (e.g., a source volume) prior to transmitting the data to the host computing device. This situation can cause an extra amount of time compared to a situation in which the actual data is being stored on the target volume because of the extra processing time needed to request the actual data from the source volume. However, as discussed above, redundantly storing an actual copy of all of the data stored on the source volume to the target volume would come at the cost of storage space on the target volume.